class Queue<T> {
    private items: T[] = [];

    // 入队操作：向队列尾部添加一个元素
    enqueue(element: T): void {
        this.items.push(element);
    }

    // 出队操作：从队列头部移除并返回一个元素
    dequeue(): T | undefined {
        if (this.isEmpty()) {
            return undefined;
        }
        return this.items.shift();
    }

    // 查看队首元素，但不移除
    front(): T | undefined {
        if (this.isEmpty()) {
            return undefined;
        }
        return this.items[0];
    }

    // 检查队列是否为空
    isEmpty(): boolean {
        return this.items.length === 0;
    }

    // 获取队列中的元素数量
    size(): number {
        return this.items.length;
    }
}

// // 示例使用
// function main() {
//     const queue = new Queue<string>();

//     console.log(queue.isEmpty()); // 输出: true，因为队列刚创建时是空的

//     queue.enqueue('Alice');
//     queue.enqueue('Bob');
//     queue.enqueue('Charlie');

//     console.log(queue.front()); // 输出: Alice，查看队首元素

//     console.log(queue.dequeue()); // 输出: Alice，移除并返回队首元素
//     console.log(queue.dequeue()); // 输出: Bob，再次移除并返回队首元素

//     console.log(queue.size()); // 输出: 1，此时队列中还有一个元素

//     console.log(queue.isEmpty()); // 输出: false，因为队列中还有元素
// }

// main();
